// axios的封装
import axios from 'axios' // 在node_modules中定义的
// 1. 给它一个默认url： 设置基地址
//    有了这个基地址之后，则后续请求中，可以省略这一段
// 2. 在请求拦截器中，统一添加token

// 3. 引入jsonbigint来处理大数
// 引入JSONbig
import JSONbig from 'json-bigint'
// axios这个库中提供的功能 .defaults.baseURL
axios.defaults.baseURL = 'http://api-toutiao-web.itheima.net'

// 添加一个请求拦截器
axios.interceptors.request.use(function (config) {
  // 所有的请求发出去之前，都会进入这个函数
  // config就是本次请求采用的配置
  // console.log('有一个axios请求', config)

  // 如果本地有token，就带上
  const tokenStr = localStorage.getItem('tokenStr')
  if (tokenStr) {
    // 一个请求是否需要在请求头中添加参数，是由接口决定的
    // 本接口需要我们传入token，并以如下的格式去传
    config.headers.Authorization = `Bearer ${tokenStr}`
  }
  return config
}, function (error) {
  // Do something with request error
  return Promise.reject(error)
})

axios.defaults.transformResponse = [
  // data就是一个字符串，理解为response中的内容
  function (data) {
    // 后端返回数据之后，都会到这里来
    // console.log('本次请求，从后端取回的数据是', data)
    try {
      return JSONbig.parse(data)
    } catch (err) {
      console.log('JSONbig.parse出错', data)
      return data
    }
  }
]
// 默认导出
export default axios
